{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Modélisation linéaire multiple\n", "
\n", "

Navigation dans la page

\n", "

\n", " Si c'est votre première visite dans ce TP, lisez attentivement chacun des points détaillé après ce paragraphe.
\n", " Si vous avez déjà commencer à travailler sur ce TP et que vous souhaiter vous déplacer rapidement dans une partie précise vous pouvez choisir la partie que vous souhaitez rejoindre ci-dessous.
\n", "

\n", " Menu de navigation\n", "
    \n", "
  1. Haut de page
  2. \n", "
  3. Bibliothèques
  4. \n", "
  5. Jeu de donnée du TD
  6. \n", "
  7. Retour sur la modélisation linéaire simple
  8. \n", "
  9. Modélisation linéaire multiple
  10. \n", "
  11. Traitement massif
  12. \n", "
\n", "
\n", "

\n", "\n", "
\n", " Technologie jupyter\n", "

\n", " La technologie jupyter permet d'exécuter du code python par un simple clique sur Executer ci-dessus.
\n", " Les morceaux de code de cette page sont interprétées case par case. Pour savoir quelle case a été interprétée avant une autre, il suffit de repérer le numéro devant la case.
\n", " Une fois qu'une case a été interprétée (=exécutée), la page garde en mémoire les variables et fonctions lues
\n", " La plateforme propose quelques outils de purge de la mémoire : \n", "

\n", "

\n", "
\n", "

SAUVEGARDER VOTRE TRAVAIL

\n", "

\n", " Pour ne pas perdre votre travail pensez à le sauvegarder régulièrement. Par défault, la sauvegarde par un clic sur la disquette en haut à gauche de page, ou par le racourci clavier classique ctrl+S\n", " est une sauvegarde en local, sur le serveur de jupyter. Vous pouvez et devez très régulièrement sauvegarder votre travail sur votre support personnel de sauvegarde (clef USB, se l'envoyer par mail etc). Ce faisant vous disposerez d'un fichier .ipynb (IPYthon NoteBook) qu'il vous suffira de recharger pour avancer. Après le rechargement assurez vous que les fonctionnalités anciennement developpées et variables utilisées sont bien dans la mémoire de la page (en rééxecutant les cases, ou plus rapidement par Kernel > Restart & Run All.

\n", "

A NOTER : vous pouvez travailler sur le tp (et tout autre fichier .ipynb) hors connexion en installant une version local du notebook de jupyter. Il faut que votre machine possède un interpreteur de python et que vous soyez connecter à internet.\n", "

    \n", "
  1. Lancer un terminal
  2. \n", "
  3. Taper la commande suivante : pip install jupyterlab
  4. \n", "
  5. Une fois l'installation terminée portez votre attention sur les dernières lignes affichées dans votre terminal vous invitant probablement à taper une ligne de commande pour faire une mise à jour
  6. \n", "
  7. Pour lancer notebook de jupyter, taper dans votre termial : jupyter notebook
  8. \n", "
  9. Votre simulateur de serveur est lancé. Il ne faut pas fermer votre terminal, auquel cas votre simulateur de serveur s'interompera. Suivez le lien indiqué dans les dernières lignes de votre terminal pour vous diriger vers votre espace local. L'interface se présente comme celle que vous trouverez sur le web. Votre travail sera cependant toujours enregistré et jamais perdu même si vous le consultez après plusieurs jours
  10. \n", "
\n", "

\n", "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Bibliothèques\n", "
\n", "

\n", "

\n", " Menu de navigation\n", "
    \n", "
  1. Haut de page
  2. \n", "
  3. Bibliothèques
  4. \n", "
  5. Jeu de donnée du TD
  6. \n", "
  7. Retour sur la modélisation linéaire simple
  8. \n", "
  9. Modélisation linéaire multiple
  10. \n", "
  11. Traitement massif
  12. \n", "
\n", "
\n", "

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from math import *\n", "from random import *\n", "from matplotlib.pyplot import *\n", "from mpl_toolkits.mplot3d import Axes3D\n", "\n", "#Simule une loi nomrle de moyenne m et d'écartype s - ça servira pour tester l'instanciation des modèles\n", "def normale(m, s) : \n", " if(m==0 and s==1) : return sqrt(-2*log(random()))*cos(2*pi*random())\n", " return s*normale(0, 1)+m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Graphique en 3D

\n", "

Comme pour les graphiques classique, il faut définir les listes de coordonnées. Puisqu'il s'agit de dimension 3, il faut en plus de l'abscisse et de l'ordonnée, préciser la côte. Une fois fait, Il faut préciser à python que nous souhaitons faire un graphique en 3D à cette fin, on tape le code suivant : \n", " \n", "fig=figure()\n", "ax = fig.add_subplot(111, projection='3d')\n", "ax.plot(X, Y, Z)
\n", " Les options classique de couleur, d'épaisseur de trait etc reste les même que pour les graphique en 2D. Si l'on souhaite faire apparaitre un nuage de point, on peut aussi faire appel à la fonction scatter comme suit : \n", " \n", "fig=figure()\n", "ax = fig.add_subplot(111, projection='3d')\n", "ax.scatter(X, Y, Z)\n", "
\n", "Enfin, pour rajouter un label aux axes on utilise les commandes suivantes :\n", " \n", "fig=figure()\n", "ax = fig.add_subplot(111, projection='3d')\n", "ax.plot(X, Y, Z)\n", "ax.set_xlabel('Abscisses')\n", "ax.set_ylabel('Ordonnées')\n", "ax.set_zlabel('Côtes')\n", "\n", "

\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exercice : Tracer les courbes suivantes : \n", "
    \n", "
  1. \n", "$\n", "\\left\\{\n", "\\begin{array}{rcl}\n", "\\vartheta&\\in&[0 ; 5\\pi]\\\\\n", "x&=&cos(\\vartheta)\\\\\n", "y&=&sin(\\vartheta)\\\\\n", "z&=&\\vartheta\n", "\\end{array}\n", "\\right.\n", "$\n", "
  2. \n", "
  3. \n", "$\n", "\\left\\{\n", "\\begin{array}{rcl}\n", "\\vartheta&\\in&[0 ; 10\\pi]\\\\\n", "x&=&\\sqrt{\\vartheta}cos(\\vartheta)\\\\\n", "y&=&\\sqrt{\\vartheta}sin(\\vartheta)\\\\\n", "z&=&\\vartheta\n", "\\end{array}\n", "\\right.\n", "$\n", "
  4. \n", "
  5. \n", "$\n", "\\left\\{\n", "\\begin{array}{rcl}\n", "t&\\in&[0 ; 2]\\\\\n", "x&=&t\\\\\n", "y&=&\\sqrt{t}\\\\\n", "z&=&t^2\n", "\\end{array}\n", "\\right.\n", "$\n", "
  6. \n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig=figure()\n", "ax = fig.add_subplot(111, projection='3d')\n", "\n", "T=[5*pi*k/100 for k in range(100+1)]\n", "X=[cos(t) for t in T]\n", "Y=[sin(t) for t in T]\n", "Z=T\n", "\n", "ax.plot(X, Y, Z)\n", "show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exercice : Tracer cent points sur une sphére de centre 0 et de rayon 1 tirés au hasard. Les points de côte positives devront s'afficher en rouge, les autres en bleu. Déterminer la proportion de point bleu et de point rouge. Augmenter le nombre de point (dix-mille points puis un million de point) et constater que le nombre de point bleu et de point rouge tendent tous les deux vers $50\\%$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Bibiliothèque de matrice

\n", "

Exécuter la case suivante pour charger des fonctionnalités sur les matrices (les currieux en développement pourront s'appesantir sur le code)

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Bibliothèque de matrice\n", "def Mat0(n, m=-1) :\n", " try :\n", " n=int(n)\n", " m=int(m)\n", " except : return Mat0(1)\n", " if(n<=0) : return Mat0(1)\n", " if(m<=0) : return Mat0(n, n)\n", " res=[]\n", " for i in range(n):\n", " res.append([])\n", " for j in range(m) : res[i].append(0)\n", " return res\n", "\n", "def MatId(n) :\n", " try : n=int(n)\n", " except : return MatId(1)\n", " if(n<=0) : return MatId(1)\n", " res=Mat0(n, n)\n", " for i in range(n) : res[i][i]=1\n", " return res\n", "\n", "def MatAdd(A, B) :\n", " try :\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " ligB=len(B)\n", " colB=len(B[0])\n", " for i in range(ligB) :\n", " for j in range(colB) : B[i][j]\n", " except : return Mat0(1)\n", " if(ligA!=ligB or colA!=colB or ligA*ligB*colA*colB==0) : return Mat0(1)\n", " res=Mat0(ligA, colA)\n", " for i in range(ligA) :\n", " for j in range(colA) : res[i][j]=A[i][j]+B[i][j]\n", " return res\n", "\n", "def MatOpp(A) :\n", " try :\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " except : return Mat0(1)\n", " res=Mat0(ligA, colA)\n", " for i in range(ligA) :\n", " for j in range(colA) : res[i][j]=-A[i][j]\n", " return res\n", "\n", "def MatSous(A, B) : return MatAdd(A, MatOpp(B))\n", "\n", "def MatProd(A, B) :\n", " try :\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " ligB=len(B)\n", " colB=len(B[0])\n", " for i in range(ligB) :\n", " for j in range(colB) : B[i][j]\n", " except : return Mat0(1)\n", " if(ligB!=colA or ligA*ligB*colA*colB==0) : return Mat0(1)\n", " res=Mat0(ligA, colB)\n", " for i in range(ligA) :\n", " for j in range(colB) : \n", " for k in range(ligB) : res[i][j]+=(A[i][k]*B[k][j])\n", " return res\n", "\n", "def MatX(A, x) :\n", " try :\n", " x=float(x)\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " except : return Mat0(1)\n", " res=Mat0(ligA, colA)\n", " for i in range(ligA) :\n", " for j in range(colA) : res[i][j]=x*A[i][j]\n", " return res\n", " \n", "def MatTransp(A) :\n", " try :\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " except : return Mat0(1)\n", " res=Mat0(colA, ligA)\n", " for i in range(colA) :\n", " for j in range(ligA) : res[i][j]=A[j][i]\n", " return res\n", " \n", "def Mineur(A, p, q) :\n", " try :\n", " p=int(p)\n", " q=int(q)\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " except : return A\n", " if(ligA<=1 or colA<=1) : return A\n", " if(p>=ligA or q>=colA) : return A\n", " \n", " res=Mat0(ligA-1, colA-1)\n", " for i in range(ligA-1) :\n", " for j in range(colA-1) :\n", " if(i

=q) : res[i][j]=A[i][j+1]\n", " if(i>=p and j=p and j>=q) : res[i][j]=A[i+1][j+1]\n", " return res\n", "def det(A) :\n", " try :\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " except : return 0\n", " if(ligA!=colA) : return 0\n", " \n", " if(ligA==1) : return A[0][0]\n", " \n", " res=0\n", " for i in range(ligA) : res+=(((-1)**i)*A[i][0]*det(Mineur(A, i, 0)))\n", " return res\n", "\n", "def MatCofact(A) :\n", " try :\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " except : return Mat0(1)\n", " if(ligA!=colA) : return Mat0(1)\n", " \n", " res=Mat0(ligA, colA)\n", " for i in range(ligA) :\n", " for j in range(colA) : res[i][j]=((-1)**(i+j))*det(Mineur(A, i, j))\n", " return res\n", "\n", "def MatInv(A) :\n", " try :\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " except : return 0\n", " if(ligA!=colA) : return Mat0(1)\n", " \n", " d=det(A)\n", " if(d==0) : return Mat0(1)\n", " \n", " return MatX(MatTransp(MatCofact(A)),1/d)\n", "\n", "def printM(A, precision=-1) : \n", " try : \n", " precision=int(precision)\n", " ligA=len(A)\n", " colA=len(A[0])\n", " for i in range(ligA) :\n", " for j in range(colA) : A[i][j]\n", " except : print(\"Erreur : le paramètre n'est pas une matrice\")\n", " \n", " res=\"\"\n", " for i in range(ligA) :\n", " for j in range(colA) :\n", " if(precision>=0) : res+=str(round(A[i][j], precision))\n", " else : res+=str(A[i][j])\n", " if(jB_max) : return MatRand(n, m, B_max, B_min)\n", " res=Mat0(n, m)\n", " for i in range(n) :\n", " for j in range(m) : res[i][j]=B_min+(B_max-B_min)*random()\n", " return res" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", " Détails des fonctions : \n", "

\n", " Utiliser la case suivante pour tester ces fonctions.\n", "

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exercice : On considère l'expérience aléatoire suivante : On tire une matrice au hasard parmi l'ensemble des matrices carrés de dimension $2$ à coefficient dans $[0; 1]$. On considère l'événement \n", "
$E_2$=\"La matrice est inversible\"
\n", "Déterminer empiriquement $\\mathbb{P}(E_2)$.
\n", "Même question avec les matrices carré de dimension $3$ à coefficient dans $[-1, 1]$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Jeu de donnée du TD\n", "
\n", "

\n", "

\n", " Menu de navigation\n", "
    \n", "
  1. Haut de page
  2. \n", "
  3. Bibliothèques
  4. \n", "
  5. Jeu de donnée du TD
  6. \n", "
  7. Retour sur la modélisation linéaire simple
  8. \n", "
  9. Modélisation linéaire multiple
  10. \n", "
  11. Traitement massif
  12. \n", "
\n", "
\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Dans la variable DATA on a remis les valeurs de la feuille de TD.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "DATA={\n", " 2010:{ \"R1\":8000, \"R2\":6000, \"C1\":3056.16, \"C2\":7344.91},\n", " 2011:{ \"R1\":8500, \"R2\":7000, \"C1\":3101.39, \"C2\":8266.82},\n", " 2012:{ \"R1\":9000, \"R2\":7000, \"C1\":3163.31, \"C2\":8335.24},\n", " 2013:{ \"R1\":9500, \"R2\":9000, \"C1\":3386.09, \"C2\":9795.64},\n", " 2014:{ \"R1\":10000, \"R2\":9500, \"C1\":3250.17, \"C2\":10501.29},\n", " 2015:{ \"R1\":12500, \"R2\":10000, \"C1\":3971.57, \"C2\":11538.66},\n", " 2016:{ \"R1\":13000, \"R2\":10500, \"C1\":3779.93, \"C2\":12301.53},\n", " 2017:{ \"R1\":14000, \"R2\":11000, \"C1\":3900.73, \"C2\":13126.63},\n", " 2018:{ \"R1\":15000, \"R2\":12000, \"C1\":4381.38, \"C2\":13850.82},\n", " 2019:{ \"R1\":16000, \"R2\":14000, \"C1\":4505.95, \"C2\":15501.97}\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Extrayez de cette variable les variables R1, R2, C1 et C2 correspondant aux colonnes de ce jeu de donnée. Créer aussi des variables R et C correspondant aux revenus et à la consommation du du couple

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Retour sur la modélisation linéaire simple\n", "
\n", "

\n", "

\n", " Menu de navigation\n", "
    \n", "
  1. Haut de page
  2. \n", "
  3. Bibliothèques
  4. \n", "
  5. Jeu de donnée du TD
  6. \n", "
  7. Retour sur la modélisation linéaire simple
  8. \n", "
  9. Modélisation linéaire multiple
  10. \n", "
  11. Traitement massif
  12. \n", "
\n", "
\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Reprennez les fonctions du TP sur la modélisation linéaire simple

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Outils de la statistique\n", "def moyenne(x) : \n", " return 0\n", "\n", "def covariance(x, y) :\n", " return 0\n", "\n", "def variance(x) : \n", " return 0\n", "\n", "def ecartype(x) : \n", " return 0\n", "\n", "#Modélisation linéaire simple\n", "def achapeau(x, y) : \n", " return 0\n", "\n", "def bchapeau(x, y) : \n", " return 0\n", "\n", "def ychapeau(x, y) :\n", " return []\n", "\n", "def residu(x, y) :\n", " return []\n", "\n", "def RCarre(x, y) :\n", " return 0\n", "\n", "def correlation(x, y) : \n", " return 0\n", "\n", "def schapeau(x, y) : \n", " return 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

En utilisant ces focntions réalisez une analyse linéaire simple entre les variables R1, R2, C1, C2, C et R (toutes les combinaisons de paire possible).

" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Modélisation linéaire multiple\n", "
\n", "

\n", "

\n", " Menu de navigation\n", "
    \n", "
  1. Haut de page
  2. \n", "
  3. Bibliothèques
  4. \n", "
  5. Jeu de donnée du TD
  6. \n", "
  7. Retour sur la modélisation linéaire simple
  8. \n", "
  9. Modélisation linéaire multiple
  10. \n", "
  11. Traitement massif
  12. \n", "
\n", "
\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Première partie : observations

\n", "

En utilisant une représentation graphique 3D, représenter le nuage de point entre les variables R1, R2, C1, C2, C et R (toutes les combinaisons de triple possible).

" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Seconde partie : fonctionnalités

\n", "

Une modélisation linéaire multiple est de la forme \n", "$$Y_i=a_{0}+a_ix_{1, i}+\\cdots+a_px_{p, i}+\\varepsilon_i$$\n", "où $x_{\\alpha, \\beta}$ correspond à la $\\beta$-ième observation du $\\alpha$-ième caractère et $\\varepsilon_i\\sim\\mathcal{N}(0, \\sigma)$.
\n", " Comme en cours, on modélise la situation sous forme matricielle, $Y=xm+\\varepsilon$.\n", "

\n", "

Ecrire la fonction constructX(CARA) qui prend en paramètre la variable CARA qui est une liste où chacune des cases est la liste des modalités des caractères étudiés et qui renvoie la matrice $x$. Par exemple, dans le cadre du TD, on appel la fonction constructX([R, C2]) pour obtenir la matrice $$\\begin{pmatrix}\n", "1&\t14000&\t7344.91\\\\\n", "1&\t15500&\t8266.82\\\\\n", "1&\t16000&\t8335.24\\\\\n", "1&\t18500&\t9795.64\\\\\n", "1&\t19500&\t10501.29\\\\\n", "1&\t22500&\t11538.66\\\\\n", "1&\t23500&\t12301.53\\\\\n", "1&\t25000&\t13126.63\\\\\n", "1&\t27000&\t13850.82\\\\\n", "1&\t30000&\t15501.97\n", "\\end{pmatrix}\n", "$$

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def constructX(CARA) :\n", " return []" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Test\n", "printM(constructX([R, C2]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Ecrire la fonction mchapeau(x, y) qui prend en paramètre la matrice x et les valeurs yet renvoie l'estimation de $m$.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def mchapeau(x, y) :\n", " return []" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Ecrire la fonction ychapeau2(x, y) qui prend en paramètre la matrice x et les valeurs y et qui renvoie la liste des estimés $\\hat{y}$.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def ychapeau2(x, y) :\n", " return []" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Ecrire la fonction residu2(x, y) qui prend en paramètre la matrice x et les valeurs y et qui renvoie la liste des résidu $y-\\hat{y}$.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def residu2(x, y) :\n", " return []" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Ecrire la fonction RCarre2(x, y) qui prend en paramètre la matrice x et les valeurs y et qui renvoie le $R^2$.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def RCarre2(x, y) :\n", " return 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Ecrire la fonction schapeau2(x, y) qui prend en paramètre la matrice x et les valeurs y et qui renvoie l'estimation de $\\sigma$, l'écart-type de l'erreur.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def schapeau2(x, y) : \n", " return 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Ecrire la fonction MatCov(x, y) qui prend en paramètre la matrice x et les valeurs y et qui renvoie l'estimation de la matrice de variance-covariance de l'estimateur $M_n$ de $m$.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def MatCov(x, y) : \n", " return []" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

A l'aide de cette dernière fonction, écrire la fonction etm(x, y) qui prend en paramètre la matrice x et les valeurs y et qui renvoie la liste des estimations des ecart-type des paramètres estimés.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def etm(x, y) :\n", " return []" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Test : on simule N variavle Z_i=a+bx_i+cy_i+epsilon_i ou epsilon_i~N(0, s)\n", "\n", "#Vous pouvez vous amuser à changer ces paramètres (laissez N grand sinon c'est pas marrant)\n", "N=10**6\n", "a=-45\n", "b=333\n", "c=1000\n", "s=pi\n", "\n", "#Simulation\n", "X=[random() for _ in range(N)] #N donnée qui suivent une loi uniforme sur [0, 1]\n", "Y=[random() for _ in range(N)] #N donnée qui suivent une loi uniforme sur [0, 1]\n", "Z=[a+b*X[i]+c*Y[i]+normale(0, s) for i in range(N)]\n", "\n", "x=constructX([X, Y])\n", "\n", "print(\"Estimation des paramètres [[a], [b], [c]] = [[\"+str(a)+\"], [\"+str(b)+\"], [\"+str(c)+\"]] ~\", mchapeau(x, Z)) \n", "print(\"Estimation de l'écartype de l'erreur s = \"+str(s)+\" ~\", schapeau2(x, Z))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Troisème partie : Application au TD

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

A l'aide des fonctions précédente, répondez aux questions du TD. Attention dans le TD, le modèle est $Z_i = ax_i + by_i + c + \\varepsilon_i$.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Quatrième partie : approfondissement du TD

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

A l'aide des fonctions précédentes, toujours sur le jeu de donnée du TD, comparer la modélisation linéaire entre les revenus et la consomation de deux manières : \n", "

    \n", "
  1. Par les outils de la modélisation linéaire simple
  2. \n", "
  3. Par les outils de la modélisation linéaire multiple (avec un seul paramètre : les revenus)
  4. \n", "
\n", "Observez les différences éventuelles.\n", "

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Si on réalise une modélisation linéaire multiple pour exprimer les revenus du couple en fonction des revenus de l'individu 1 et des revenus de l'individu 2. A quoi doit-on s'attende ? Vérifier cette hypothèse par le calcul.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Réalisez une modélisation linéaire multiple pour exprimer la consomation de l'individu 1 (resp. individu 2, resp. couple) en fonction des revenus de l'individu 1 et des revenus de l'individu 2 et des revenus du couple. Commenter et analyser vos résultats

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Réaliser des modélisation linéaire multiple des varaibles R1, R2, C1, C2 et C pour en exprimer une en fonction de certaines autres. Vous réaliserez toutes les conbinaisons possible (de toutes les dimension possible - il y en a 57 réellement différentes).

" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Traitement massif\n", "
\n", "\n", "

\n", "

\n", " Menu de navigation\n", "
    \n", "
  1. Haut de page
  2. \n", "
  3. Bibliothèques
  4. \n", "
  5. Jeu de donnée du TD
  6. \n", "
  7. Retour sur la modélisation linéaire simple
  8. \n", "
  9. Modélisation linéaire multiple
  10. \n", "
  11. Traitement massif
  12. \n", "
\n", "
\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Exécuter la case suivante pour charger les données de note au bac de 3380 étudiants candidatant au DUT STID de Villetaneuse.
A vous d'étudier d'éventuelle relation linéaire multiple.
\n", "Pour faire naitre des idées vous pourrez commencer par une modélisation linéaire simple avec la note de francais (écrit) en abscisse et chacunes des autres notes des matières obligatoire en ordonnées. Vous pourrez aussi, dans le nuage de point, distinguer les femmes des hommes. De même avec la note de science en abscisse.
\n", " Autre exemple, dans un nuage de point en 3D vous devriez représenter la note de français en abscisse, la note de science en ordonnée et la note de phylosophie pour la côte en mettant des points de différentes couleur en fonction du comportement.

\n", "

Indice : Il n'y a pas de corrélation linéaire entre les notes des hommes et des femmes, ni entre les notes des différents groupe de comportement.

\n", "

En executant la case suivante, vous récupérer une variable PARCOURSUP de type dictionnaire qui a pour clef, l'identifiant de l'étudiant et pour valeur le champ suivant :
\n", "\"EtudiantZZZ\": {\n", "\t\t\"Sexe\" :\"H\",\n", "\t\t\"Département\" : 94 ,\n", "\t\t\"Comportement\" :\"A\",\n", "\t\t\"MatObli\" : {\n", "\t\t\t\"Français_Oral\" : 19.61 ,\n", "\t\t\t\"Français_Ecrit\" : 11.57 ,\n", "\t\t\t\"Philosophie\" : 9.16 ,\n", "\t\t\t\"HistoireGeo\" : 11.61 ,\n", "\t\t\t\"LV1\" : 11.82 ,\n", "\t\t\t\"EPS\" : 12.39 ,\n", "\t\t\t\"Sciences\" : 11.83 ,\n", "\t\t},\n", "\t\t\"MatOpti\" : {\n", "\t\t\t\"Mathématiques\" : 20 ,\n", "\t\t\t\"Informatique\" : 8.9 ,\n", "\t\t}\n", "\t}\n", "\n", "

" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from NotesBac import *\n", "print(PARCOURSUP[\"EtudiantZZZ\"])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.1" } }, "nbformat": 4, "nbformat_minor": 4 }